为什么中c# 不能写成 char[] str="hello";

来源:百度知道 编辑:UC知道 时间:2024/06/24 11:50:29
c# 中的语句 char[] str="hello";通不过编译,为什么??

我在C语言中经常写成:char my[20]="hello";

为什么C#不行?c#的string和char[]和byte[]有什么区别??
楼下的,你的代码通不过编译!!
char [] str = new char[20];
str = "hello";

因为C和C#是不同的语言,你总不会以为C#向下兼容C吧

在C语言中,语句 char my[20]="hello"; 之所以能被编译是因为C语言本身没有字符串这个概念,字符串"hello"被默认保存为一个char类型的数组,所以将一个数组"hello"赋给另一个数组my[20]当然没有问题

但是C#的体系截然不同。字符串和数组在C#中是两个概念,他们分别对应于System.String和System.Array两个类。虽然同为引用类型,但是并没有默认的“自动”类型转换函数。

也就是说,int可以赋值给char,因为有默认类型转换函数。但一个字符串不能直接赋值给一个数组,因为没有这样的转换函数。所以你的C#语句char[] str="hello";不能通过编译也是正常的。

解决的办法有几种。一种是给字符串加个大括号,即:
char[] str={"hello"};
这样str数组就包含了一个元素,这个元素的类型是字符串,值为"hello"。
使用Console.WriteLine{str[0]};语句就能打印出hello

还有一种是笨办法,即
char[] str = {'h', 'e', 'l', 'l', 'o'};
使用for或foreach打印

更好的代替方法就是上面所说的ToCharArray()方法,它返回一个包含字符串中一部分字符的Char[]。具体怎么用自己查MSDN。

当然你也可以自己写一个默认类型转换函数,让编译器能够自动将字符串保存在char数组中。不过与其这样费力的模拟C语言,倒不如试试新的数据结构String呢

你应该是C语言之后转过来学C#的吧

C语言可以动态申请大小,但是C#不可以 必须先实例化才可以使用、
所以你你如果想给str赋值首先要给str一个空间

char[] s